package de.mmis.core.base.abstracttree.serializer;

import java.lang.reflect.InvocationHandler;

/**
 * all classes proxy invocation handler classes implementing this interface and
 * following the policies can be (de)serialized from/into a Tree
 * 
 * @author Christian Koch
 * 
 */
public interface SerializableNetworkInvocationHandler extends InvocationHandler {

	/**
	 * @return a class providing a static method
	 *         "createProxy(String id, Class<?>[] interfaces, String host, int port)"
	 *         that creates a new proxy instance.
	 */
	public Class<?> getProxyCreationClass();

	/**
	 * @return the ID of the object connected to
	 */
	public String getID();

	/**
	 * @return all interfaces implemented by this proxy instance
	 */
	public Class<?>[] getImplementingInterfaces();

	/**
	 * @return host name or IP this proxy is connected to
	 */
	public String getHost();

	/**
	 * @return port number this proxy is connected to
	 */
	public int getPort();
}
